This invention relates to compositing two-dimensional (2D) and three-dimensional (3D) images in graphical image manipulation systems.
A graphical image manipulation application program, such as Photoshop(copyright) or After Effects(copyright), from Adobe Systems Incorporated, of San Jose, Calif., can store a graphical image as a set of image layers. A final image can be generated by compositing the image layers together. The image layers can be thought of as stacked transparency sheets. The density of ink on a transparency sheet controls the extent to which the sheet obscures underlying sheets. In the computer program, the color and density of the ink on the transparency sheet are represented by a color value and an opacity (or xe2x80x9calphaxe2x80x9d) value, respectively.
A conventional graphical image document includes a set of image layers, commonly denoted as layers 1, 2, . . . , n, that are organized in a layer stack. The bottom layer, that is, layer 1, acts as the background or bottom sheet, whereas the other layers, i.e., layers 2, 3, . . . , n, act as the transparency sheets that are overlaid on the background. Examples of different types of layers that may be included in a composite image include image layers, track mattes and adjustment layers.
An image layer typically includes an image that is represented by an array of pixels, each pixel having a color and, optionally, an opacity. The layers can either be two-dimensional (2D) or three-dimensional (3D). A 2D image layer does not have any depth, and can only be moved along the horizontal (X) and vertical (Y) directions and rotated around the (Z) axis. A 3D image layer, on the other hand, has an associated depth coordinate (Z), defining its position along a depth axis. A 3D image layer can typically be manipulated in 3D space through rotation, translation and scaling operations, which allows the 3D layers to display more realistic depictions of how they reflect light, cast shadows, and move through space. 2D and 3D layers are typically differentiated by a tag that identifies the type of layer. Based on the type of layer, the application typically allows a user to perform a different set of operations on the layers.
A track matte is a layer whose alpha channel, that is, opacity, at each pixel is used to specify the transparency of another layer, or of the track matte itself. Track mattes can be animated over time. Like image layers, track mattes can be either 2D or 3D layers and can be treated in corresponding ways including rotation, translation, and scaling.
An adjustment layer is a layer in which effects can be stored and applied to multiple layers. The adjustment layer itself is not visible, but its effects are visible. Any effects applied to an adjustment layer affect all layers below the adjustment layer in the composition stacking order. Thus, placing an adjustment layer at the bottom of the stacking order does not have any effect.
The process of stacking layers to form a final image is known as compositing. A list of layers that are to be composited together is known as a composition. In a 2D environment, the layers are composited in order from bottom to top. Since different layers may have different transparency values, the stacking order of the layers may be important. A composite image with layers ordered from 1 to n, will often look different from a composite image in which the layers are ordered from n to 1. In a 3D environment, the order is determined by the geometry in that the 3D layer that is the xe2x80x9cfarthest awayxe2x80x9d from the viewpoint gets rendered first. In other words, what is important in both situations is the order in which the layers are processed during the compositing process.
Conventionally, the compositing process begins by calculating any dynamic data in the image layer, such as the color of the pixels in the image. Then the opacity of each pixel is determined. Finally, the color of each pixel in the image layer is combined with the composited color of the corresponding pixel in an output buffer where the final image is stored to generate a new composited color. This process is iterated for each layer until all the layers have been composited, thus generating the final image.
In many situations a user wishes to combine 2D and 3D objects in a scene. Conventionally, there are three ways this can be done. First, the 2D element (that is, the 2D layer) can be used as a background image. The background image is applied to the output buffer first and any 3D objects are composited in front of the background image. Second, the 2D image can be treated as a texture map, that is, a surface with a particular structure. The texture map is xe2x80x9cgluedxe2x80x9d onto a portion of a plane in a 3D layer and the plane can then be manipulated in 3D space. Third, the 3D layers can be composited together into a temporary image buffer, which is then composited with one image buffer that contains 2D elements.
In all these methods, the 3D images are processed separately from the 2D images, in that the 2D images either are pre-processed, post-processed, or treated as if they were 3D geometry. From a workflow point of view, this is cumbersome for a user. A typical task for a user is to place titles or other types of text (that is, a 2D element) in a 3D scene. The user may wish to place the title in front of a 3D image, behind a 3D image, or between two 3D images. The pre-processing method (i.e. the first method) presented above does not allow 2D images to be placed in front of a 3D images. The post-processing method (that is, the third method) requires that the 2D image always be placed in front of the 3D image. The second method, in which the 2D images are treated as texture maps on 3D images, may work but presents difficulties in terms of aligning the plane on which the 2D image is placed to the 3D camera (that is, the projection of the composite image that is displayed to a user) and correctly scaling the geometry in order to achieve the desired image size. Furthermore, none of the methods presented above allows mixing track mattes or adjustment layers with image layers of a different dimensionality, such as mixing a 3D adjustment layer with a 2D image layer.
In general, in one aspect, this invention provides methods and apparatus, including computer program products, implementing and using techniques for generating a composite image. Electronic data representing at least three image layers to be combined in a composite image is provided. At least one of the image layers has two-dimensional content and at least one of the image layers has three-dimensional content. The layers are arranged in a sequence represented by a composition sequence list. The at least three image layers are grouped into at least three metalayers, each of the metalayers including one or more image layers having content having a common dimensionality such that each image layer that is adjacent to an image layer having a common dimensionality is grouped in the same metalayer as that image layer. The metalayers are arranged in a metalayer sequence. A metalayer is selected according to the metalayer sequence and the image layers in the selected metalayer are processed to generate a raster representation of the image layers in the selected metalayer. The raster representation is composited into an image buffer and the process is repeated until the raster representation of each of the metalayers has been composited into the image buffer to form a composite image.
Advantageous implementations can include one or more of the following features.
Grouping the image layers can include sorting adjacent image layers with two-dimensional content into a two-dimensional bin and adjacent image layers with three-dimensional content into a three-dimensional bin. Visual parameters for the three-dimensional image layers can be stored in a global visual parameter list. Processing the image layers can include selectively applying the stored visual parameters to the image layers in the metalayer. The visual parameters can apply to all image layers that have already been processed according to the metalayer sequence. The stored visual parameters can be selectively applied such that the two-dimensional content is unaffected by the visual parameters. The visual parameters include one or more of camera position, light effects and shadow effects. The metalayer sequence can correspond to the composition sequence list.
Grouping the image layers can include selecting a current image layer in the composition sequence list, determining the dimensionality of the content in the current image layer, and determining the dimensionality of the content in a previous, adjacent image layer. If there is no previous, adjacent image layer, or if the dimensionality of the content in the current image layer is different from the previous adjacent image layer, a new metalayer can be created for image layers having content of the current image layer""s dimensionality and the current image layer can be added to the metalayer. If the dimensionality of the content in the current image layer is the same as the dimensionality of the content in the previous adjacent image layer, the current image layer can be added to the metalayer of the previous, adjacent image layer.
Grouping the image layers can include determining if the current image layer is an adjustment layer or a track matte and skipping the current image layer and selecting the next image layer in the composition sequence list if the current image layer is an adjustment layer or a track matte. Processing the image layers can include processing two-dimensional metalayers with a two-dimensional renderer and processing three-dimensional metalayers with a three-dimensional renderer. The raster representations can be sequentially composited into the same image buffer.
Processing the image layers can include determining for each image layer in the metalayer whether the image layer has an associated adjustment layer and applying the adjustment layer to the current and previously processed image layers if the image layer has an associated adjustment layer. Applying the adjustment layer can include processing the adjustment layer to generate a raster representation of the adjustment layer if the adjustment layer is a three-dimensional adjustment layer, and applying the raster representation of the adjustment layer to the raster representations of the associated image layers.
Processing the image layers can include determining for each image layer in the metalayer whether the image layer has an associated track matte and if the image layer has an associated track matte, applying the track matte to the current and previously processed image layers. If the track matte is a three-dimensional track matte, the track matte can be processed to generate a raster representation of the track matte and the raster representation of the track matte can be applied to the raster representations of the associated image layers.
In general, in another aspect, this invention provides methods and apparatus, including computer program products, implementing and using techniques for generating a composite image. Electronic data representing at least three image layers to be combined in a composite image is provided. Each of the image layers includes two-dimensional content or three-dimensional content and the image layers are arranged in a composition sequence. The image layers are grouped to form at least three metalayers. Each metalayer includes a set of one or more image layers such that the set of image layers in a given metalayer are adjacent in the composition sequence and have a common dimensionality. The metalayers are arranged in a metalayer sequence such that each metalayer is adjacent in the metalayer sequence to one or more metalayers comprising image layers of a different dimensionality. The metalayers are processed to generate a composite image comprising at least a portion of the two-dimensional content and at least a portion of the three-dimensional content, and one or more visual effects are applied to the composite image, such that the two-dimensional content is unaffected by the visual effects.
The invention can be implemented to realize one or more of the following advantages. 2D and 3D layers can be placed in any order in one composition, and do not need to be placed in a fixed, predetermined order, as is the case with prior art image systems. There is no need to treat 2D images as texture maps on planes as is the case with conventional image applications. This provides greater artistic freedom to a user compared to conventional applications. Furthermore, less memory is used and faster processing can be accomplished. In the conventional methods, a user must intervene manually, for example, to create a texture map, to align the plane with the camera, and to scale the geometry, as was described above. The inventive method does not require any manual user interaction of this type and is therefore more user-friendly and less prone to errors than the current methods.
The details of one or more embodiments of the invention are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the invention will be apparent from the description and drawings, and from the claims.